package com.cskaoyan.javase.oop3._2inner._2static._2basic;

/**
 * 我们在具体学习静态内部类的访问特点之前,先要明确两个原则:
 *      1."好兄弟原则",静态内部类和外围类是好兄弟,互相访问不受权限限制.
 *      2.静态内部类和外围类互相独立,创建对象,类加载等都不会互相影响
 *          所以:
 *          a.静态内部类的方法中,如何访问外围类成员?
 *              直接创建对象访问即可
 *          b,外围类的方法中,如何访问静态内部类成员?
 *              直接创建对象访问即可
 *
 * 静态内部类的访问特点:
 * 静态内部类的访问特点，主要从以下几个角度研究：
 *      1.静态内部类内部访问外围类
 *          直接创建对象访问,不受访问权限限制
 *
 *      2.外围类访问静态内部类成员
 *           直接创建对象访问,不受访问权限限制
 *
 *      3.外部类访问静态内部类成员
 *           首先全程都受访问权限限制
 *           因为静态内部类相对于外围类独立
 *           所以可以直接创建静态内部类对象
 *           语法:
 *           EnclosedClazz.NestedClazz nc = new EnclosedClazz.NestedClazz();
 *
 *      4.静态内部类访问外部类成员
 *          直接创建对象,但是全程受访问权限限制
 *
 *
 * @since 11:37
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        EnclosedClazz.NestedClazz nc = new EnclosedClazz.NestedClazz();
        System.out.println(nc.a);
        // System.out.println(nc.b);
    }
    public void test(){
        EnclosedClazz.NestedClazz nc = new EnclosedClazz.NestedClazz();
    }
}

class EnclosedClazz {
    int a;
    private int b = 10;
    static int c = 20;
    static final int D = 30;

    public void test(){
        NestedClazz nc = new NestedClazz();
    }
    public static void testStatic(){
        NestedClazz nc = new NestedClazz();
    }

    static class NestedClazz {
        int a;
        private int b = 10;
        static int c = 20;
        static final int D = 30;

        public void testNested() {
            EnclosedClazz ec = new EnclosedClazz();
            System.out.println(ec.a);
            System.out.println(ec.b);
            System.out.println(a);
            System.out.println(b);

        }

        public static void testNestedStatic() {
            EnclosedClazz ec = new EnclosedClazz();
            System.out.println(ec.a);
            System.out.println(ec.b);
            NestedClazz nc = new NestedClazz();
            System.out.println(nc.a);
        }

    }
}
